﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
using System.IO;

namespace elr_tracking_web.Services
{
    [ServiceContract]
    public interface ICat
    {
        /// <summary>
        /// Obtiene la lista de Bancos
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Banco> GetDataBanco();
        /// <summary>
        /// Obtiene la lista de Departamentos
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Departamento> GetDataDepartamento();
        /// <summary>
        /// Obtiene la ista de empresas 
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Empresa> GetDataEmpresa();
        /// <summary>
        /// Obtiene la lista de Medios de Envio
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.MedioEnvio> GetDataMedioEnvio();
        /// <summary>
        /// Obtiene la lista de Monedas
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Moneda> GetDataMoneda();
        /// <summary>
        /// Obtiene la lista de Proveedores
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Proveedor> GetDataProveedor();
        /// <summary>
        /// Obtiene la lista de Proveedor Cuenta
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.ProveedorCuenta> GetDataProveedorCuenta();
        /// <summary>
        /// Obtiene la lista de Proyectos
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.Proyecto> GetDataProyecto();
        /// <summary>
        /// Obtiene la lista de Termino Envios
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.TerminoEnvio> GetDataTerminoEnvio();
        /// <summary>
        /// Obtiene la lista de Tipo Cotización
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.TipoCotizacion> GetDataTipoCotizacion();
        /// <summary>
        /// Obtiene la lista de Tipo de Pedimento
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.TipoPedimento> GetDataTipoPedimento();
        /// <summary>
        /// Obtiene la lista de Artículos
        /// </summary>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //List<elr_tracking_bal.ART.Articulo> GetDataArticulo();
        /// <summary>
        /// Obtiene la lista de Categorías
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.ART.Categoria> GetDataCategoria();
        /// <summary>
        /// Obtiene la lista de Equipos
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.ART.Equipo> GetDataEquipo();
        /// <summary>
        /// Obtiene la lista de Marcas
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.ART.Marca> GetDataMarca();
        /// <summary>
        /// Obtienen la lista de Modelos
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.ART.Modelo> GetDataModelo();
        /// <summary>
        /// Inserta un Banco
        /// </summary>
        /// <param name="BANCO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertBanco(string BANCO);
        /// <summary>
        /// Inserta un Departamento
        /// </summary>
        /// <param name="DEPARTAMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertDepartamento(string DEPARTAMENTO);
        /// <summary>
        /// Inserta una Empresa
        /// </summary>
        /// <param name="EMPRESA_NAME"></param>
        /// <param name="RAZON_SOCIAL"></param>
        /// <param name="RFC"></param>
        /// <param name="DIRECCION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertEmpresa(string EMPRESA_NAME, string RAZON_SOCIAL, string RFC, string DIRECCION);
        /// <summary>
        /// Inserta un Medio de Envío
        /// </summary>
        /// <param name="MEDIO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertMedioEnvio(string MEDIO_ENVIO);
        /// <summary>
        /// Inserta una Moneda
        /// </summary>
        /// <param name="MONEDA"></param>
        /// <param name="MONEDA_ABR"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertMoneda(string MONEDA, string MONEDA_ABR);
        /// <summary>
        /// Inserta un Proveedor
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="PROVEEDOR"></param>
        /// <param name="CONTACTO"></param>
        /// <param name="TEL1"></param>
        /// <param name="TEL2"></param>
        /// <param name="MAIL"></param>
        /// <param name="CALLE"></param>
        /// <param name="ID_PAIS"></param>
        /// <param name="ID_CIUDAD"></param>
        /// <param name="CODIGO_POSTAL"></param>
        /// <param name="RFC"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertProveedor(int ID_PROVEEDOR, string PROVEEDOR, string CONTACTO, string TEL1
            , string TEL2, string MAIL, string CALLE, int ID_PAIS, int ID_CIUDAD, string CODIGO_POSTAL, string RFC);
        /// <summary>
        /// Inserta un Proveedor Cuenta
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="ID_BANCO"></param>
        /// <param name="NUMERO_CUENTA"></param>
        /// <param name="CLABE"></param>
        /// <param name="BENEFICIARIO"></param>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //elr_tracking_bal.UpsertStateMsg InsertProveedorCuenta(int ID_PROVEEDOR, int ID_BANCO, string NUMERO_CUENTA,
        //                            string CLABE, string BENEFICIARIO);
        /// <summary>
        /// Inserta un Proyecto
        /// </summary>
        /// <param name="PROYECTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertProyecto(string PROYECTO);
        /// <summary>
        /// Inserta un Termino Envío
        /// </summary>
        /// <param name="CLAVE"></param>
        /// <param name="TERMINO"></param>
        /// <param name="SIGNIFICADO"></param>
        /// <param name="GENERA_LOTES"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertTerminoEnvio(string CLAVE, string TERMINO, string SIGNIFICADO, string GENERA_LOTES);
        /// <summary>
        /// Inserta un Tipo de Cotización
        /// </summary>
        /// <param name="TIPO_COTIZACION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertTipoCotizacion(string TIPO_COTIZACION);
        /// <summary>
        /// Inserta un Tipo de Pedimento
        /// </summary>
        /// <param name="TIPO_PEDIMENTO"></param>
        /// <param name="CLAVE"></param>
        /// <param name="REGIMEN"></param>
        /// <param name="NOTA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertTipoPedimento(string TIPO_PEDIMENTO, string CLAVE, string REGIMEN, string NOTA);
        /// <summary>
        /// Inserta un Artículo
        /// </summary>
        /// <param name="ARTICULO"></param>
        /// <param name="ID_CATEGORIA"></param>
        /// <param name="ID_EQUIPO"></param>
        /// <param name="ID_MARCA"></param>
        /// <param name="ID_MODELO"></param>
        /// <param name="IDENTIFICADOR"></param>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //elr_tracking_bal.UpsertStateMsg InsertArticulo(string ARTICULO,int ID_CATEGORIA,int ID_EQUIPO,int ID_MARCA,int ID_MODELO, string IDENTIFICADOR);
        /// <summary>
        /// Inserta una Categoría
        /// </summary>
        /// <param name="CATEGORIA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertCategoria(string CATEGORIA);
        /// <summary>
        /// Inserta un Equipo
        /// </summary>
        /// <param name="EQUIPO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertEquipo(string EQUIPO);
        /// <summary>
        /// Inserta una Marca
        /// </summary>
        /// <param name="MARCA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertMarca(string MARCA);
        /// <summary>
        /// Inserta un Modelo
        /// </summary>
        /// <param name="MODELO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg InsertModelo(string MODELO);
        /// <summary>
        /// Borra Bancos
        /// </summary>
        /// <param name="ID_BANCO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteBanco(string ID_BANCO);
        /// <summary>
        /// Borra Departamentos
        /// </summary>
        /// <param name="ID_DEPARTAMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteDepartamento(string ID_DEPARTAMENTO);
        /// <summary>
        /// Borra Empresas
        /// </summary>
        /// <param name="ID_EMPRESA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteEmpresa(string ID_EMPRESA);
        /// <summary>
        /// Borra Medios de Envío
        /// </summary>
        /// <param name="ID_MEDIO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteMedioEnvio(string ID_MEDIO_ENVIO);
        /// <summary>
        /// Borra Monedas
        /// </summary>
        /// <param name="ID_MONEDA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteMoneda(string ID_MONEDA);
        /// <summary>
        /// Borra Proveedores
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteProveedor(string ID_PROVEEDOR);
        /// <summary>
        /// Borra Proveedor Cuenta
        /// </summary>
        /// <param name="ID_PROVEDOR_CUENTA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteProveedorCuenta(string ID_PROVEEDOR_CUENTA);
        /// <summary>
        ///  Borra Proyectos
        /// </summary>
        /// <param name="ID_PROYECTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteProyecto(string ID_PROYECTO);
        /// <summary>
        ///  Borra Terminos de Envío
        /// </summary>
        /// <param name="ID_TERMINO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteTerminoEnvio(string ID_TERMINO_ENVIO);
        /// <summary>
        /// Borra Tipos de Cotización
        /// </summary>
        /// <param name="ID_TIPO_COTIZACION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteTipoCotizacion(string ID_TIPO_COTIZACION);
        /// <summary>
        /// Borra Tipos de Pedimento
        /// </summary>
        /// <param name="ID_TIPO_PEDIMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteTipoPedimento(string ID_TIPO_PEDIMENTO);
        /// <summary>
        /// Borra Artículos
        /// </summary>
        /// <param name="ID_ARTICULO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteArticulo(string ID_ARTICULO);
        /// <summary>
        /// Borra Categorías
        /// </summary>
        /// <param name="ID_CATEGORIA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteCategoria(string ID_CATEGORIA);
        /// <summary>
        /// Borra Equipos
        /// </summary>
        /// <param name="ID_EQUIPO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteEquipo(string ID_EQUIPO);
        /// <summary>
        /// Borra Marcas
        /// </summary>
        /// <param name="ID_MARCA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteMarca(string ID_MARCA);
        /// <summary>
        /// Borra Modelos
        /// </summary>
        /// <param name="ID_MODELO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.DeleteStateMsg DeleteModelo(string ID_MODELO);
        /// <summary>
        /// Actualiza un Banco
        /// </summary>
        /// <param name="ID_BANCO"></param>
        /// <param name="BANCO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateBanco(int ID_BANCO, string BANCO);
        /// <summary>
        /// Actualiza un Departamento
        /// </summary>
        /// <param name="ID_DEPARTAMENTO"></param>
        /// <param name="DEPARTAMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateDepartamento(int ID_DEPARTAMENTO, string DEPARTAMENTO);
        /// <summary>
        /// Actualiza una Empresa
        /// </summary>
        /// <param name="ID_EMPRESA"></param>
        /// <param name="EMPRESA_NAME"></param>
        /// <param name="RAZON_SOCIAL"></param>
        /// <param name="RFC"></param>
        /// <param name="DIRECCION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateEmpresa(int ID_EMPRESA, string EMPRESA_NAME, string RAZON_SOCIAL, string RFC, string DIRECCION );
        /// <summary>
        /// Actualiza un Medio de Envío
        /// </summary>
        /// <param name="ID_MEDIO_ENVIO"></param>
        /// <param name="MEDIO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateMedioEnvio(int ID_MEDIO_ENVIO, string MEDIO_ENVIO);
        /// <summary>
        /// Actualiza una Moneda
        /// </summary>
        /// <param name="ID_MONEDA"></param>
        /// <param name="MONEDA"></param>
        /// <param name="MONEDA_ABR"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateMoneda(int ID_MONEDA, string MONEDA, string MONEDA_ABR);
        /// <summary>
        /// Actualiza un Proveedor
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="PROVEEDOR"></param>
        /// <param name="CONTACTO"></param>
        /// <param name="TEL1"></param>
        /// <param name="TEL2"></param>
        /// <param name="MAIL"></param>
        /// <param name="CALLE"></param>
        /// <param name="ID_PAIS"></param>
        /// <param name="ID_CIUDAD"></param>
        /// <param name="CODIGO_POSTAL"></param>
        /// <param name="RFC"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateProveedor(int ID_PROVEEDOR, string PROVEEDOR, string CONTACTO, string TEL1, string TEL2, string MAIL, string CALLE
                                , int ID_PAIS, int ID_CIUDAD, string CODIGO_POSTAL, string RFC);
        /// <summary>
        /// Actualiza un Proveedor Cuenta
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="ID_PROVEEDOR_CUENTA"></param>
        /// <param name="ID_BANCO"></param>
        /// <param name="NUMERO_CUENTA"></param>
        /// <param name="CLABE"></param>
        /// <param name="BENEFICIARIO"></param>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //elr_tracking_bal.UpsertStateMsg UpdateProveedorCuenta(int ID_PROVEEDOR, int ID_PROVEEDOR_CUENTA, int ID_BANCO, string NUMERO_CUENTA,
        //                            string CLABE, string BENEFICIARIO);
        /// <summary>
        /// Actualiza un Proyecto
        /// </summary>
        /// <param name="ID_PROYECTO"></param>
        /// <param name="PROYECTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateProyecto(int ID_PROYECTO, string PROYECTO);
        /// <summary>
        /// Actualiza un Termino de Envío
        /// </summary>
        /// <param name="ID_TERMINO_ENVIO"></param>
        /// <param name="CLAVE"></param>
        /// <param name="TERMINO"></param>
        /// <param name="SIGNIFICADO"></param>
        /// <param name="GENERA_LOTES"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateTerminoEnvio(int ID_TERMINO_ENVIO, string CLAVE, string TERMINO, string SIGNIFICADO, 
                                                            string GENERA_LOTES);
        /// <summary>
        /// Actualiza un Tipo de Cotización
        /// </summary>
        /// <param name="ID_TIPO_COTIZACION"></param>
        /// <param name="TIPO_COTIZACION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateTipoCotizacion(int ID_TIPO_COTIZACION, string TIPO_COTIZACION);
        /// <summary>
        /// Actualiza un Tipo de Pedimento
        /// </summary>
        /// <param name="ID_TIPO_PEDIMENTO"></param>
        /// <param name="TIPO_PEDIMENTO"></param>
        /// <param name="CLAVE"></param>
        /// <param name="REGIMEN"></param>
        /// <param name="NOTA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateTipoPedimento(int ID_TIPO_PEDIMENTO, string TIPO_PEDIMENTO, string CLAVE, string REGIMEN, string NOTA);
        /// <summary>
        /// Actualiza un Artículo
        /// </summary>
        /// <param name="ID_ARTICULO"></param>
        /// <param name="ARTICULO"></param>
        /// <param name="ID_CATEGORIA"></param>
        /// <param name="ID_EQUIPO"></param>
        /// <param name="ID_MARCA"></param>
        /// <param name="ID_MODELO"></param>
        /// <param name="IDENTIFICADOR"></param>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //elr_tracking_bal.UpsertStateMsg UpdateArticulo(int ID_ARTICULO, string ARTICULO, int ID_CATEGORIA, int ID_EQUIPO,int ID_MARCA, int ID_MODELO, string IDENTIFICADOR);
        /// <summary>
        /// Actualiza una Categoría
        /// </summary>
        /// <param name="ID_CATEGORIA"></param>
        /// <param name="CATEGORIA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateCategoria(int ID_CATEGORIA, string CATEGORIA);
        /// <summary>
        /// Actualiza un Equipo
        /// </summary>
        /// <param name="ID_EQUIPO"></param>
        /// <param name="EQUIPO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateEquipo(int ID_EQUIPO, string EQUIPO);
        /// <summary>
        /// Actualiza una Marca
        /// </summary>
        /// <param name="ID_MARCA"></param>
        /// <param name="MARCA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateMarca(int ID_MARCA, string MARCA);
        /// <summary>
        /// Actualiza un Modelo
        /// </summary>
        /// <param name="ID_MODELO"></param>
        /// <param name="MODELO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg UpdateModelo(int ID_MODELO, string MODELO);
        /// <summary>
        /// Obtiene un Banco
        /// </summary>
        /// <param name="ID_BANCO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Banco GetOneBanco(int ID_BANCO);
        /// <summary>
        /// Obtiene un Departamento
        /// </summary>
        /// <param name="ID_DEPARTAMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Departamento GetOneDepartamento(int ID_DEPARTAMENTO);
        /// <summary>
        /// Obtiene una Empresa
        /// </summary>
        /// <param name="ID_EMPRESA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Empresa GetOneEmpresa(int ID_EMPRESA);
        /// <summary>
        /// Obtiene un Medio de Envío
        /// </summary>
        /// <param name="ID_MEDIO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.MedioEnvio GetOneMedioEnvio(int ID_MEDIO_ENVIO);
        /// <summary>
        /// Obtiene una Moneda
        /// </summary>
        /// <param name="ID_MONEDA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Moneda GetOneMoneda(int ID_MONEDA);
        /// <summary>
        /// Obtiene un Proveedor
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Proveedor GetOneProveedor(int ID_PROVEEDOR);
        /// <summary>
        /// Obtiene un Proveedor Cuenta
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <returns></returns>
        //[OperationContract]
        //[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        //elr_tracking_bal.CAT.ProveedorCuenta GetOneProveedorCuenta(int ID_PROVEEDOR_CUENTA);
        /// <summary>
        /// Obtiene un Proyecto
        /// </summary>
        /// <param name="ID_PROYECTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.Proyecto GetOneProyecto(int ID_PROYECTO);
        /// <summary>
        /// Obtiene un Termino de Envío
        /// </summary>
        /// <param name="ID_TERMINO_ENVIO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.TerminoEnvio GetOneTerminoEnvio(int ID_TERMINO_ENVIO);
        /// <summary>
        /// Obtiene un Tipo de Cotización
        /// </summary>
        /// <param name="ID_TIPO_COTIZACION"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.TipoCotizacion GetOneTipoCotizacion(int ID_TIPO_COTIZACION);
        /// <summary>
        /// Obtiene un Tipo de Pedimento
        /// </summary>
        /// <param name="ID_TIPO_PEDIMENTO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.CAT.TipoPedimento GetOneTipoPedimento(int ID_TIPO_PEDIMENTO);
        /// <summary>
        /// Obtiene un Artículo 
        /// </summary>
        /// <param name="ID_ARTICULO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.ART.Articulo GetOneArticulo(int ID_ARTICULO);
        /// <summary>
        /// Obtiene una Categoría
        /// </summary>
        /// <param name="ID_CATEGORIA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.ART.Categoria GetOneCategoria (int ID_CATEGORIA);
        /// <summary>
        /// Obtiene un Equipo
        /// </summary>
        /// <param name="ID_EQUIPO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.ART.Equipo GetOneEquipo(int ID_EQUIPO);
        /// <summary>
        /// Obtiene una Marca
        /// </summary>
        /// <param name="ID_MARCA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.ART.Marca GetOneMarca(int ID_MARCA);
        /// <summary>
        /// Obtiene un Modelo
        /// </summary>
        /// <param name="ID_MODELO"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.ART.Modelo GetOneModelo(int ID_MODELO);
        /// <summary>
        /// Crea la relación Proveedor Categoría
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <param name="CATEGORIA"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        elr_tracking_bal.UpsertStateMsg insertRelProveedorCategoria(int ID_PROVEEDOR, string CATEGORIA);
        /// <summary>
        /// Obtiene la lista de relación entre Proveedor Categoría
        /// </summary>
        /// <param name="ID_PROVEEDOR"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
        List<elr_tracking_bal.CAT.ProveedorCategoria> GetListProveedorCategoria(int ID_PROVEEDOR);
   }
}
